<?php

/*
  [UCenter] (C)2001-2099 Comsenz Inc.
  This is NOT a freeware, use is subject to license terms

  $Id: plugin.php 1059 2011-03-01 07:25:09Z monkey $
 */
!defined('IN_UC') && exit('Access Denied');

class pluginmodel
{

    var $db;
    var $base;

    function __construct(&$base)
    {
        $this->pluginmodel($base);
    }

    function pluginmodel(&$base)
    {
        $this->base = $base;
        $this->db = $base->db;
    }

    function get_plugins()
    {
        include_once UC_ROOT . './lib/xml.class.php';
        $arr = array();
        $dir = UC_ROOT . './plugin';
        $d = opendir($dir);
        while ($f = readdir($d))
        {
            if ($f != '.' && $f != '..' && $f != '.svn' && is_dir($dir . '/' . $f))
            {
                $s = file_get_contents($dir . '/' . $f . '/plugin.xml');
                $arr1 = @xml_unserialize($s);
                $arr1['dir'] = $f;
                unset($arr1['lang']);
                $arr[] = $arr1;
            }
        }
        $arr = $this->orderby_tabindex($arr);
        return $arr;
    }

    function get_plugin($pluginname)
    {
        $f = file_get_contents(UC_ROOT . "./plugin/$pluginname/plugin.xml");
        include_once UC_ROOT . './lib/xml.class.php';
        return @xml_unserialize($f);
    }

    function get_plugin_by_name($pluginname)
    {
        $dir = UC_ROOT . './plugin';
        $s = file_get_contents($dir . '/' . $pluginname . '/plugin.xml');
        return @xml_unserialize($s, TRUE);
    }

    function orderby_tabindex($arr1)
    {
        $arr2 = array();
        $t = array();
        foreach ($arr1 as $k => $v)
        {
            $t[$k] = $v['tabindex'];
        }
        asort($t);
        $arr3 = array();
        foreach ($t as $k => $v)
        {
            $arr3[$k] = $arr1[$k];
        }
        return $arr3;
    }

    function cert_get_file()
    {
        return UC_ROOT . './data/tmp/ucenter_' . substr(md5(UC_KEY), 0, 16) . '.cert';
    }

    function cert_dump_encode($arr, $life = 0)
    {
        $s = "# UCenter Applications Setting Dump\n" .
                "# Version: UCenter " . UC_SERVER_VERSION . "\n" .
                "# Time: " . $this->time . "\n" .
                "# Expires: " . ($this->time + $life) . "\n" .
                "# From: " . UC_API . "\n" .
                "#\n" .
                "# This file was BASE64 encoded\n" .
                "#\n" .
                "# UCenter Community: http://www.discuz.net\n" .
                "# Please visit our website for latest news about UCenter\n" .
                "# --------------------------------------------------------\n\n\n" .
                wordwrap(base64_encode(serialize($arr)), 50, "\n", 1);
        return $s;
    }

    function cert_dump_decode($certfile)
    {
        $s = @file_get_contents($certfile);
        if (empty($s))
        {
            return array();
        }
        preg_match("/# Expires: (.*?)\n/", $s, $m);
        if (empty($m[1]) || $m[1] < $this->time)
        {
            unlink($certfile);
            return array();
        }
        $s = preg_replace("/(#.*\s+)*/", '', $s);
        $arr = daddslashes(unserialize(base64_decode($s)), 1);
        return $arr;
    }

}
